负载均衡要为“现代应用”服务
摘要:
负载均衡是数据中心的基础设施,已经有很多年的历史。随着云计算技术的发展和应用的发展,传统的负载均衡方案已经无法现代应用的需求。为了更好的支持现代应用,需要新一代的负载均衡技术方案,即面向云原生的流量管理平台。
1. 传统负载均衡的问题
负载均衡出现于上世纪90年代,一开始主要形态为硬件设备[1]。代表性的企业包括F5、A10、Radware等。
随着时代的发展,基于硬件设备的解决方案体系结构已经落后,表现为以下方面:
购置成本高
负载均衡设备使用专用硬件,中高端的设备价格达到几十万甚至上百万。
功能升级困难
对硬件设备做功能升级非常困难,是一个高危操作,容易在升级中出现故障。
动态扩缩容困难
硬件的购置和部署周期很长(以月为单位),难以满足业务动态快速增加容量的需求。
集群化能力弱,只能支持主备模式
主备模式一方面限制了扩容的规模,另一方面造成了资源的浪费
四七层功能都支持,七层处理功能/性能弱
由于七层功能的逻辑较为复杂,难以用硬件加速,所以在硬件设备中七层的处理属于“慢路径”。在开启了七层功能后,往往会发现设备的性能出现明显的下降。另外,由于和应用层关系密切,七层功能经常需要修改,而硬件设备无法像普通软件一样方便的升级。
• 数据面和控制面耦合,扩容和升级困难
在设备中数据面和控制面耦合在一起,这给系统的扩容和功能的升级都造成了困难。
2. 现代应用的定义
随着互联网的发展和技术的进步,越来越多的业务已经转向“现代应用”(Modern Application)。“现代应用”具有以下4个特征[2]:
(1) Scalability: 可扩展
应用可以快速扩容以满足用户流量的快速增长
(2)Portability: 可迁移
应用在多云和混合云的环境下都可以运行
(3)Resilience:高可用,快速恢复
在各种可能的故障情况下都可以保证应用的高可用
(4)Agility:敏捷迭代
“快速迭代”已经成为应用得以生存和发展的必须能力
3. 现代应用对负载均衡的需求
作为数据中心的基础设施,负载均衡要为现代应用服务。
为了满足“现代应用”的需求,负载均衡需要具备以下十个特征或能力:
(1) 软件化[3]
只有实现了软件化,才能实现容量可扩展,并支持多云部署和迁移
(2) 四七层分离[4]
四七层分离后,容量更容易扩展,功能也更容易更新
(3) 多主集群
相比主备模式,多主的集群模式容量更易扩展,也减少了资源的浪费
(4) 数据平面和管理平面分离
两个平面分离后,容量更容易扩展,功能升级也更容易
(5) 多云/多集群调度能力[6]
这个能力是多云/多集群环境下实现高可用和快速迭代的必须
(6) 强大的路由管理能力[7]
微服务化后,应用的数量爆炸式的增长,需要有很强的路由能力。另外,应用的敏捷迭代需要灰度发布能力,也需要很强的路由管理能力[8]。
(7) 流量洞察能力
现代应用的高可用和敏捷迭代,都对数据报表能力提出了很高的要求。提升服务质量和迭代速度,需要“数据驱动”的运营。
(8) 安全能力
为了满足现代应用高可用的要求,负载均衡需要提供强大的安全能力,为应用提供保护。
(9) 多租户能力[7]
“多租户”是云的一个基本特征,多租户为应用的敏捷迭代提供了支持。
(10) 平台化 / API接口
平台化和完备的API接口是高可用和敏捷迭代的重要需求,越来越多的工作不是由人来手工操作,而是由程序来自动完成。
4. 传统负载均衡无法支持现代应用
传统的负载均衡已经无法满足现代应用的需求。除了在第1部分中描述的问题外,传统负载均衡系统还存在以下问题
(1) 多租户能力弱,配置变更困难
“多租户”是云的基本功能。缺乏多租户功能导致所有的配置都耦合在一起,增加了配置变更的风险;另外由于缺乏多租户间的权限隔离,也难以实现租户的自助配置修改,而需要经过负载均衡运维团队的处理,无法满足敏捷迭代的需要。
(2) 流量统计能力弱,难以支持精细运营
传统的负载均衡系统只有SNMP MIB数据,一方面能够提供的信息量比较少,另外也缺乏时序数据,无法满足精细运营的需要。
(3) 缺乏安全能力,组网难度高,风险大
传统的负载均衡缺乏安全能力,所以必须串联第三方的安全系统或设备。
典型的架构如下图所示,在部署中需要串联SSL卸载系统和防火墙系统。这两个环节容易成为性能的瓶颈,也容易成为故障点。例如,对应用层防火墙(WAF),检测规则的变更是一个经常要发生的操作,容易导致性能下降,也存在系统崩溃的隐患。这些问题都可能影响正常的转发。
(4) 多数据中心的流量调度能力弱,速度慢,精度低
在传统负载均衡方案中,多数据中心调度主要基于DNS。DNS的生效要数分钟,并且无法做精细的调度。
(5) 仍然基于SNMP、命令行等传统管理方式
传统的负载均衡系统中主要基于SNMP和命令行的方式来管理,虽然部分系统支持Open API的方式,但是API的功能和性能往往存在局限。
5. 建设面向云原生的流量管理平台
负载均衡要为现代应用服务。为了更好的支持现代应用,需要新一代的负载均衡技术方案,即面向云原生的流量管理平台。
在BFE开源项目的设计中,充分考虑了现代应用的各种需求。详细的说明可以参考“BFE:企业级七层负载均衡开源软件”[5]。
参考文献:
[1]What is load balancing,https://avinetworks.com/what-is-load-balancing/
[2]Demystifying Modern Application Development,https://www.reworked.co/information-management/demystifying-modern-application-develpment/
[3]“软件化”是负载均衡发展的必然趋势,BFE开源项目公众号
[4]负载均衡为什么要“四七层分离”,BFE开源项目公众号
[5]BFE:企业级七层负载均衡开源软件,BFE开源项目公众号
[6]借助BFE,招商银行提高了应用可用性和运营效率,CNCF公众号(英文,也可以参考中文翻译版)
[7]为什么BFE可以取代Nginx – 从设计的视角,BFE开源项目公众号
[8]如何基于BFE做灰度发布,BFE开源项目公众号
欢迎关注BFE开源项目的公众号,获得本项目的更多信息。谢谢!
BFE开源项目的地址为:https://github.com/bfenetworks/bfe